"""
给定一个包含 n 个整数的数组"nums，判断"nums"中是否存在三个元素"a ，b ，c ，
使得"a + b + c = 0 ？请找出所有和为 0 且"不重复"的三元组。

示例 1：
输入：nums = [-1,0,1,2,-1,-4]
输出：[[-1,-1,2],[-1,0,1]]

示例 2：
输入：nums = []
输出：[]

示例 3：
输入：nums = [0]
输出：[]

链接：https://leetcode-cn.com/problems/1fGaJU
"""
from mode import *


class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:
        res = []
        n = len(nums)
        nums.sort()
        #  -1 -1 0 1 2
        for i in range(n):
            left, right = i + 1, n - 1
            while left < right:
                temp = nums[left] + nums[right]
                if temp == -nums[i]:
                    tempList = [nums[i], nums[left], nums[right]]
                    if tempList not in res:
                        res.append(tempList)
                    left += 1
                    right -= 1
                    # res.append([nums[i],nums[left],nums[right]])
                elif temp < -nums[i]:
                    left += 1
                else:
                    right -= 1

        return res


if __name__ == "__main__":
    A = Solution()
    #     -1 -1 0 1 2
    print(A.threeSum([3, 0, -2, -1, 1, 2]))
